拡張機能マニフェスト
すべての Visual Studio Code 拡張機能は、拡張機能ディレクトリ構造のルートにマニフェストファイル package.json
が必要です。
フィールド
名前 | 必須 | 型 | 詳細 |
---|---|---|---|
name |
Y | string |
拡張機能の名前 - すべて小文字でスペースなしにする必要があります。 名前は Marketplace で一意である必要があります。 |
version |
Y | string |
SemVer 互換バージョン。 |
publisher |
Y | string |
パブリッシャー識別子 |
engines |
Y | object |
拡張機能が 互換性 のある VS Code のバージョンに一致する少なくとも vscode キーを含むオブジェクト。* にすることはできません。例: ^0.10.5 は、最小 VS Code バージョン 0.10.5 との互換性を示します。 |
license |
string |
npm のドキュメントを参照してください。拡張機能のルートに LICENSE ファイルがある場合、license の値は "SEE LICENSE IN <filename>" にする必要があります。 |
|
displayName |
string |
Marketplace で使用される拡張機能の表示名。 表示名は Marketplace で一意である必要があります。 |
|
description |
string |
拡張機能が何であり、何をするかの簡単な説明。 | |
categories |
string[] |
拡張機能に使用するカテゴリ。許可される値: [プログラミング言語, スニペット, リンター, テーマ, デバッガー, フォーマッター, キーマップ, SCM プロバイダー, その他, 拡張機能パック, 言語パック, データサイエンス, 機械学習, 可視化, ノートブック, 教育, テスト] |
|
keywords |
array |
拡張機能を簡単に見つけられるようにするためのキーワードの配列。これらは Marketplace の他の拡張機能タグに含まれています。このリストは現在、5 つのキーワードに制限されています。 | |
galleryBanner |
object |
アイコンに合わせて Marketplace ヘッダーの書式設定を支援します。詳細については、下記を参照してください。 | |
preview |
boolean |
Marketplace で拡張機能をプレビューとしてフラグを立てます。 | |
main |
string |
拡張機能のエントリーポイント。 | |
browser |
string |
Web 拡張機能のエントリーポイント。 | |
contributes |
object |
拡張機能の機能拡張を記述するオブジェクト。 | |
activationEvents |
array |
この拡張機能のアクティベーションイベントの配列。 | |
badges |
array |
Marketplace の拡張機能ページのサイドバーに表示する承認済みバッジの配列。各バッジは、バッジの画像 URL の url 、ユーザーがバッジをクリックしたときにたどるリンクの href 、および description の 3 つのプロパティを含むオブジェクトです。 |
|
markdown |
string |
Marketplace で使用される Markdown レンダリングエンジンを制御します。github (デフォルト) または standard のいずれか。 |
|
qna |
marketplace (デフォルト)、string 、false |
Marketplace のQ & A リンクを制御します。デフォルトの Marketplace Q & A サイトを有効にするには、marketplace に設定します。カスタム Q & A サイトの URL を指定するには、文字列に設定します。Q & A を完全に無効にするには、false に設定します。 |
|
sponsor |
object |
ユーザーが拡張機能をスポンサーできる場所を指定します。これは、ユーザーが拡張機能をスポンサーできるページにリンクする単一のプロパティ url を持つオブジェクトです。 |
|
dependencies |
object |
拡張機能に必要なランタイム Node.js 依存関係。npm の dependencies とまったく同じです。 |
|
devDependencies |
object |
拡張機能に必要な開発 Node.js 依存関係。npm の devDependencies とまったく同じです。 |
|
extensionPack |
array |
一緒にインストールできる拡張機能の ID の配列。拡張機能の ID は常に ${publisher}.${name} です。例: vscode.csharp 。 |
|
extensionDependencies |
array |
この拡張機能が依存する拡張機能の ID の配列。拡張機能の ID は常に ${publisher}.${name} です。例: vscode.csharp 。 |
|
extensionKind |
array |
リモート構成で拡張機能を実行する場所を示す配列。値は、ui (ローカルで実行)、workspace (リモートマシンで実行)、またはその両方で、順序は優先順位を設定します。例: [ui, workspace] は、拡張機能をどちらの場所でも実行できるが、ローカルマシンで実行することを優先することを示します。詳細については、こちらを参照してください。 |
|
scripts |
object |
npm の scripts とまったく同じですが、vscode:prepublish や vscode:uninstall などの VS Code 固有のフィールドが追加されています。 |
|
icon |
string |
少なくとも 128x128 ピクセル (Retina 画面の場合は 256x256) のアイコンへのパス。 | |
pricing |
string |
拡張機能の価格情報。許可される値: Free 、Trial 。デフォルト: Free 。詳細については、こちらを参照してください。 |
|
capabilities |
object |
制限されたワークスペースでの拡張機能の機能について説明するオブジェクト: untrustedWorkspaces , virtualWorkspaces 。 |
npm の package.json
リファレンスも確認してください。
例
完全な package.json
の例を以下に示します
{
"name": "wordcount",
"displayName": "Word Count",
"version": "0.1.0",
"publisher": "ms-vscode",
"description": "Markdown Word Count Example - reports out the number of words in a Markdown file.",
"author": {
"name": "sean"
},
"categories": ["Other"],
"icon": "images/icon.png",
"galleryBanner": {
"color": "#C80000",
"theme": "dark"
},
"pricing": "Free",
"activationEvents": ["onLanguage:markdown"],
"engines": {
"vscode": "^1.0.0"
},
"main": "./out/extension",
"scripts": {
"vscode:prepublish": "node ./node_modules/vscode/bin/compile",
"compile": "node ./node_modules/vscode/bin/compile -watch -p ./"
},
"devDependencies": {
"@types/vscode": "^0.10.x",
"typescript": "^1.6.2"
},
"license": "SEE LICENSE IN LICENSE.txt",
"bugs": {
"url": "https://github.com/microsoft/vscode-wordcount/issues",
"email": "sean@contoso.com"
},
"repository": {
"type": "git",
"url": "https://github.com/microsoft/vscode-wordcount.git"
},
"homepage": "https://github.com/microsoft/vscode-wordcount/blob/main/README.md"
}
Marketplace プレゼンテーションのヒント
VS Code Marketplace に表示されるときに拡張機能を素晴らしく見せるためのヒントと推奨事項をいくつか示します。
常に最新の vsce
を使用してください。npm install -g @vscode/vsce
を実行して、最新バージョンであることを確認してください。
拡張機能のルートフォルダーに README.md
Markdown ファイルを含めてください。コンテンツを拡張機能の詳細 (Marketplace 上) の本文に含めます。README.md
に相対パスの画像リンクを指定できます。
いくつかの例を以下に示します
適切な表示名と説明を提供してください。これは Marketplace および製品表示で重要です。これらの文字列は VS Code でのテキスト検索にも使用され、関連するキーワードがあると非常に役立ちます。
"displayName": "Word Count",
"description": "Markdown Word Count Example - reports out the number of words in a Markdown file.",
アイコンとコントラストの強いバナーカラーは、Marketplace ページヘッダーで見栄えがよくなります。theme
属性は、バナーで使用するフォント (dark
または light
) を指します。
{
"icon": "images/icon.png",
"galleryBanner": {
"color": "#C80000",
"theme": "dark"
}
}
設定できるオプションのリンク (bugs
、homepage
、repository
) がいくつかあり、これらは Marketplace の リソース セクションの下に表示されます。
{
"license": "SEE LICENSE IN LICENSE.txt",
"homepage": "https://github.com/microsoft/vscode-wordcount/blob/main/README.md",
"bugs": {
"url": "https://github.com/microsoft/vscode-wordcount/issues",
"email": "sean@contoso.com"
},
"repository": {
"type": "git",
"url": "https://github.com/microsoft/vscode-wordcount.git"
}
}
Marketplace リソースリンク | package.json 属性 |
---|---|
問題 | bugs:url |
リポジトリ | repository:url |
ホームページ | homepage |
ライセンス | license |
拡張機能の category
を設定します。同じ category
の拡張機能は Marketplace でグループ化され、フィルタリングと検出が向上します。
注: 拡張機能に意味のある値のみを使用してください。許可される値は
[プログラミング言語, スニペット, リンター, テーマ, デバッガー, フォーマッター, キーマップ, SCM プロバイダー, その他, 拡張機能パック, 言語パック, データサイエンス, 機械学習, 可視化, ノートブック, 教育, テスト]
です。構文の強調表示やコード補完などの一般的な言語機能にはプログラミング言語
を使用します。言語パック
カテゴリは、表示言語拡張機能 (たとえば、ブルガリア語ローカライズ) 用に予約されています。
{
"categories": ["Linters", "Programming Languages", "Other"]
}
承認済みバッジ
セキュリティ上の懸念から、信頼できるサービスからのバッジのみを許可しています。
次の URL プレフィックスからのバッジを許可します
- api.bintray.com
- api.travis-ci.com
- api.travis-ci.org
- app.fossa.io
- badge.buildkite.com
- badge.fury.io
- badge.waffle.io
- badgen.net
- badges.frapsoft.com
- badges.gitter.im
- badges.greenkeeper.io
- cdn.travis-ci.com
- cdn.travis-ci.org
- ci.appveyor.com
- circleci.com
- cla.opensource.microsoft.com
- codacy.com
- codeclimate.com
- codecov.io
- coveralls.io
- david-dm.org
- deepscan.io
- dev.azure.com
- docs.rs
- flat.badgen.net
- gemnasium.com
- github.com (ワークフローのみ)
- gitlab.com
- godoc.org
- goreportcard.com
- img.shields.io
- isitmaintained.com
- marketplace.visualstudio.com
- nodesecurity.io
- opencollective.com
- snyk.io
- travis-ci.com
- travis-ci.org
- visualstudio.com
- vsmarketplacebadges.dev
- www.versioneye.com
注: vsmarketplacebadge.apphb.com バッジを vsmarketplacebadges.dev バッジに置き換えてください。
使用したい他のバッジがある場合は、GitHub issue をオープンしてください。喜んで確認させていただきます。
拡張機能の機能拡張の組み合わせ
yo code
ジェネレーターを使用すると、TextMate テーマ、カラライザー、スニペットを簡単にパッケージ化し、新しい拡張機能を作成できます。ジェネレーターを実行すると、オプションごとに完全なスタンドアロン拡張機能パッケージが作成されます。ただし、複数の機能を組み合わせた単一の拡張機能を使用する方が便利なことがよくあります。たとえば、新しい言語のサポートを追加する場合、色分けによる言語定義と、スニペット、さらにはデバッグのサポートもユーザーに提供したいと考えるでしょう。
拡張機能の機能を組み合わせるには、既存の拡張機能マニフェスト package.json
を編集し、新しい機能と関連ファイルを追加します。
以下は、LaTex 言語定義 (言語識別子とファイル拡張子)、色分け (grammars
)、およびスニペットを含む拡張機能マニフェストです。
{
"name": "language-latex",
"description": "LaTex Language Support",
"version": "0.0.1",
"publisher": "someone",
"engines": {
"vscode": "0.10.x"
},
"categories": ["Programming Languages", "Snippets"],
"contributes": {
"languages": [
{
"id": "latex",
"aliases": ["LaTeX", "latex"],
"extensions": [".tex"]
}
],
"grammars": [
{
"language": "latex",
"scopeName": "text.tex.latex",
"path": "./syntaxes/latex.tmLanguage.json"
}
],
"snippets": [
{
"language": "latex",
"path": "./snippets/snippets.json"
}
]
}
}
拡張機能マニフェストの categories
属性に、Marketplace での簡単な検出とフィルタリングのために プログラミング言語
と スニペット
の両方が含まれるようになったことに注意してください。
ヒント: マージされた機能拡張が同じ識別子を使用していることを確認してください。上記の例では、3 つの機能拡張すべてが言語識別子として "latex" を使用しています。これにより、VS Code はカラライザー (
grammars
) とスニペットが LaTeX 言語用であり、LaTeX ファイルを編集するときにアクティブになることを認識します。
拡張機能パック
個別の拡張機能を 拡張機能パック にまとめてバンドルできます。拡張機能パックは、一緒にインストールされる拡張機能のセットです。これにより、お気に入りの拡張機能を他のユーザーと簡単に共有したり、PHP 開発などの特定のシナリオ向けの拡張機能のセットを作成して、PHP 開発者が VS Code をすぐに使い始められるようにしたりできます。
拡張機能パックは、package.json
ファイル内の extensionPack
属性を使用して他の拡張機能をバンドルします。
たとえば、以下はデバッガーと言語サービスを含む PHP 用の拡張機能パックです
{
"extensionPack": ["xdebug.php-debug", "zobo.php-intellisense"]
}
拡張機能パックをインストールすると、VS Code はその拡張機能の依存関係もインストールするようになります。
拡張機能パックは、拡張機能パック
Marketplace カテゴリに分類する必要があります
{
"categories": ["Extension Packs"]
}
拡張機能パックを作成するには、yo code
Yeoman ジェネレーターを使用して、新しい拡張機能パック オプションを選択します。現在 VS Code インスタンスにインストールされている拡張機能のセットでパックをシードするオプションがあります。これにより、お気に入りの拡張機能で拡張機能パックを簡単に作成し、Marketplace に公開して、他のユーザーと共有できます。
拡張機能パックは、バンドルされた拡張機能との機能的な依存関係を持つべきではなく、バンドルされた拡張機能はパックとは独立して管理できる必要があります。拡張機能が別の拡張機能に依存している場合、その依存関係は extensionDependencies
属性で宣言する必要があります。
拡張機能のアンインストールフック
拡張機能が VS Code からアンインストールされるときに実行する必要があるクリーンアップがある場合は、拡張機能の package.json の scripts
セクションの下にアンインストールフック vscode:uninstall
に node
スクリプトを登録できます。
{
"scripts": {
"vscode:uninstall": "node ./out/src/lifecycle"
}
}
このスクリプトは、拡張機能が VS Code から完全にアンインストールされたとき、つまり拡張機能がアンインストールされた後に VS Code が再起動 (シャットダウンと起動) されたときに実行されます。
注: Node.js スクリプトのみがサポートされています。
役立つ Node モジュール
VS Code 拡張機能の作成に役立つ Node.js モジュールが npmjs でいくつか利用可能です。これらを拡張機能の dependencies
セクションに含めることができます。
- vscode-nls - 外部化とローカライズのサポート。
- vscode-uri - VS Code とその拡張機能で使用される URI 実装。
- jsonc-parser - コメントの有無にかかわらず JSON を処理するためのスキャナーとフォールトトレラントパーサー。
- request-light - プロキシサポートを備えた軽量 Node.js リクエストライブラリ
- vscode-extension-telemetry - VS Code 拡張機能の一貫したテレメトリーレポート。
- vscode-languageclient - 言語サーバープロトコルに準拠した言語サーバーを簡単に統合できます。
次のステップ
VS Code 拡張機能モデルの詳細については、次のトピックをお試しください
- 機能拡張ポイント - VS Code 機能拡張ポイントリファレンス
- アクティベーションイベント - VS Code アクティベーションイベントリファレンス
- 拡張機能 Marketplace - VS Code 拡張機能 Marketplace の詳細